/*
@Time: 2025/9/23 00:26
@Author: Leslie
@Function: 岗位控制层
*/

package controller

import (
	"admin_api/api/entity"
	"admin_api/api/service"
	"github.com/gin-gonic/gin"
	"log"
	"strconv"
)

var sysPost entity.SysPost

// CreateSysPost 新增岗位
// @Summary 新增岗位
// @Produce json
// @BasePath /api
// @Description 新增岗位接口
// @Param data body entity.SysPost true "data"
// @Success 200 {object} result.Result
// @Router /post/add [post]
func CreateSysPost(c *gin.Context) {
	_ = c.BindJSON(&sysPost)
	log.Printf("接收参数：PostCode=%s，PostName=%s", sysPost.PostCode, sysPost.PostName)
	service.SysPostService().CreateSysPost(c, sysPost)
}

// GetSysPostList 分页查询岗位列表
// @Summary 分页查询岗位列表
// @Produce json
// @Description 分页查询岗位列表
// @BasePath /api
// @Param pageNum query int false "分页数"
// @Param pageSize query int false "每页数"
// @Param postName query string false "岗位名称"
// @Param postStatus query string false "状态：1->启用,2->禁用"
// @Param beginTime query string false "开始时间"
// @Param endTime query string false "结束时间"
// @Success 200 {object} result.Result
// @Router /post/list [get]
func GetSysPostList(c *gin.Context) {
	PageNum, _ := strconv.Atoi(c.Query("pageNum"))
	PageSize, _ := strconv.Atoi(c.Query("pageSize"))
	PostName := c.Query("PostName")
	PostStatus := c.Query("PostStatus")
	BeginTime := c.Query("beginTime")
	EndTime := c.Query("endTime")
	service.SysPostService().GetSysPostList(c, PageNum, PageSize, PostName, PostStatus, BeginTime, EndTime)
}

// GetSysPostById 根据id查询岗位
// @Summary 根据id查询岗位
// @Produce json
// @Description 根据id查询岗位
// @BasePath /api
// @Param id query int true "ID"
// @Success 200 {object} result.Result
// @Router /post/info [get]
func GetSysPostById(c *gin.Context) {
	Id, _ := strconv.Atoi(c.Query("id"))
	service.SysPostService().GetSysPostById(c, Id)
}

// UpdateSysPost 修改岗位
// @Summary 修改岗位接口
// @Produce json
// @Description 修改岗位接口
// @BasePath /api
// @Param data body entity.SysPost true "data"
// @Success 200 {object} result.Result
// @Router /post/update [put]
func UpdateSysPost(c *gin.Context) {
	_ = c.BindJSON(&sysPost)
	service.SysPostService().UpdateSysPost(c, sysPost)
}

// DeleteSysPostById 根据id删除岗位
// @Summary 根据id删除岗位接口
// @Produce json
// @Description 根据id删除岗位接口
// @BasePath /api
// @Param data body entity.SysPostIdDto true "data"
// @Success 200 {object} result.Result
// @Router /post/delete [delete]
func DeleteSysPostById(c *gin.Context) {
	var dto entity.SysPostIdDto
	_ = c.BindJSON(&dto)
	service.SysPostService().DeleteSysPostById(c, dto)
}

// BatchDeleteSysPost 批量删除岗位
// @Summary 批量删除岗位接口
// @Produce json
// @Description 批量删除岗位接口
// @BasePath /api
// @Param data body entity.DelSysPostDto true "data"
// @Success 200 {object} result.Result
// @Router /post/batch/delete [delete]
func BatchDeleteSysPost(c *gin.Context) {
	var dto entity.DelSysPostDto
	_ = c.BindJSON(&dto)
	service.SysPostService().BatchDeleteSysPost(c, dto)
}

// UpdateSysPostStatus 岗位状态修改
// @Summary 岗位状态修改接口
// @Produce json
// @Description 岗位状态修改接口
// @BasePath /api
// @Param data body entity.UpdateSysPostStatusDto true "data"
// @Success 200 {object} result.Result
// @Router /post/updateStatus [put]
func UpdateSysPostStatus(c *gin.Context) {
	var dto entity.UpdateSysPostStatusDto
	_ = c.BindJSON(&dto)
	service.SysPostService().UpdateSysPostStatus(c, dto)
}

// QuerySysPostVoList 岗位下拉列表
// @Summary 岗位下拉列表
// @Produce json
// @Description 岗位下拉列表
// @BasePath /api
// @Success 200 {object} result.Result
// @Router /post/vo/list [get]
func QuerySysPostVoList(c *gin.Context) {
	service.SysPostService().QuerySysPostVoList(c)
}
